package impl

import (
	"context"

	"gitlab.com/go-course-project/go15/vblog/common"
	"gitlab.com/vionysos/go15035-vic/vblog/apps/user"
	"gitlab.com/vionysos/go15035-vic/vblog/conf"
	"gorm.io/gorm"
)

func NewUserServiceImpl() *UserServiceImpl {
	//db = create conn
	// 每个业务对象，都可能依赖到 数据库
	// 获取一个全的 mysql 连接池对象
	// 程序启动的时候一定要加载配置
	return &UserServiceImpl{
		db: conf.C().MySQL.GetDB(),
	}
}

type UserServiceImpl struct {
	// 每个业务对象，都可能依赖到数据库
	// db = create conn
	// 全局的MySQL
	db *gorm.DB
}

func (i *UserServiceImpl) CreateUser(
	ctx context.Context,
	in *user.CreateUserRequest) (
	*user.User, error) {
	// 1. 校验请求的合法性
	if err := common.Validate(in); err != nil {
		return nil, err
	}
	// 2. 创建user对象(资源)
	ins := user.NewUser(in)
	// 3. user 对象保持入库
	/*
		读取数据库配置
		获取数据库连接
		操作连接 保证数据
	*/
	//INSERT INTO `users` (`created_at`,`updated_at`,`username`,`password`,`role`,`label`) VALUES (1717281667,1717281667,'admin','123456',0,'{}')
	if err := i.db.Save(ins).Error; err != nil {
		return nil, err
	}
	// 4. 返回保持后的user对象
	return ins, nil

}
func (i *UserServiceImpl) QueryUser(
	ctx context.Context,
	in *user.QueryUserRequest) (
	*user.UserSet, error) {
	return nil, nil

}
